package com.eight.vote.util;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.eight.vote.pojo.VMessage;
import com.eight.vote.pojo.VUser;
import com.eight.vote.service.VMessageService;
import lombok.extern.slf4j.Slf4j;

import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.List;

/**
 * 本地线程域，用于在每次登录后从redis中获取数据进行使用
 */
@Slf4j
public class UpdateStatus {
    /**
     * 根据时间判断是否已经过期，并自动修改状态方法
     */
    public static void  changeStatus(VMessageService messageService){
        QueryWrapper<VMessage> wrapper = new QueryWrapper<>();
        wrapper.ne("status",2);
        //将所有的状态不为2的投票信息数据查询出来
        List<VMessage> list = messageService.list(wrapper);
        if (list == null||list.size()<1) {
            return;
        }
        //遍历所有数据
        list.stream().forEach(item->{
            LocalDateTime endTime = item.getEndTime();
            LocalDateTime now = LocalDateTime.now();
//            当前时间是否在结束时间之后
            if (now.isAfter(endTime)) {
                //是
                UpdateWrapper<VMessage> updateWrapper = new UpdateWrapper<>();
                updateWrapper.set("status",2).eq("msg_id",item.getMsgId());
                messageService.update(updateWrapper);
            }
        });
    }


    public void update(LocalDateTime endTime){

    }


    public long getDate(LocalDateTime endTime) {
        LocalDateTime now = LocalDateTime.now();
        System.out.println("计算两个时间的差：");
        //获取秒数
        long nowSecond = now.toEpochSecond(ZoneOffset.ofHours(0));
        long endSecond = endTime.toEpochSecond(ZoneOffset.ofHours(0));
        long absSeconds = Math.abs(nowSecond - endSecond);
        System.out.println(nowSecond + "||" + endSecond);
        //获取秒数
        long s = absSeconds % 60;
        return s;
    }

}
